/*
 * ContatoDAO.java
 *
 * Created on 5 de Fevereiro de 2007, 02:11
 */

package cefetpb.pod.agenda.servidor.persistence;

import java.util.List;
import java.util.Calendar;
import com.db4o.query.Predicate;
import cefetpb.pod.agenda.tol.Contato;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *
 * @author Rosberg
 * @author Deijiane
 */
public class ContatoDAO {
    
    public List<Contato> consultarPorDataNascimento(Date dataNascimento){
        DataBaseAccess db = DataBaseAccess.getInstance();
        
        List<Contato> contatosAniversariantes = db.queryList(new Predicate<Contato>() {
            public boolean match(Contato c) {
                SimpleDateFormat date = new SimpleDateFormat("dd/MM/yyyy");
                String dataNascimento = date.format(c.getDataNascimento()).substring(0, 5);
                String dataAtual = date.format(new Date()).substring(0,5);
                
                return dataNascimento.equals(dataAtual);
            }
        });
        
        return contatosAniversariantes;
    }
    
    public List<Contato> getAniversariantes() {
        DataBaseAccess db = DataBaseAccess.getInstance();
        
        List<Contato> aniversariantes = db.queryList(new Predicate<Contato>() {
            private Calendar hoje = Calendar.getInstance();
            private Calendar dataNascimento = Calendar.getInstance();
            
            public boolean match(Contato c) {
                dataNascimento.setTime(c.getDataNascimento());
                
                int diaAtual = hoje.get(Calendar.DAY_OF_MONTH);
                int mesAtual = hoje.get(Calendar.MONTH);
                int diaDataNasc = dataNascimento.get(Calendar.DAY_OF_MONTH);
                int mesDataNasc = dataNascimento.get(Calendar.MONTH);
                
                return ((diaDataNasc == diaAtual) && (mesDataNasc == mesAtual));
            }
        });
        
        return aniversariantes;
    }
}